package com.ms.demo;

/**
 * @description: 目标对象calculateImpl的代理对象  静态代理
 * @author: ms
 * @create: 2022-08-29 14:15
 */
public class CalculateImplStaticProxy implements Calculate{

    private CalculateImpl target;

    public CalculateImplStaticProxy(CalculateImpl target) {
        this.target = target;
    }

    public int add(int a, int b) {
        System.out.println("--- add方法执行前 ---");
        int result = target.add(a, b);
        System.out.println("--- add方法执行后 ---；执行后的结果为：" + result);
        return result;
    }

    public int sub(int a, int b) {
        System.out.println("--- sub方法执行前 ---");
        int result = target.sub(a, b);
        System.out.println("--- sub方法执行后 ---；执行后的结果为：" + result);
        return result;
    }

    public int mul(int a, int b) {
        System.out.println("--- mul方法执行前 ---");
        int result = target.mul(a, b);
        System.out.println("--- mul方法执行后 ---；执行后的结果为：" + result);
        return result;
    }

    public int div(int a, int b) {
        int result = 0;
        try {
            System.out.println("--- div方法执行前 ---");
            result = target.div(a, b);
            System.out.println("--- div方法执行后 ---；执行后的结果为：" + result);
        } catch (Exception e){
            e.printStackTrace();
            System.out.println("--- div方法执行异常---");
        } finally {
            System.out.println("***finally方法 --- div方法执行结束 ***");
        }
        return result;
    }
}